A software program includes the data and functions of that program which are defined in a source code. The source code contains all of the programming statements written in a particular programming language. Compilers are tools that read the source code, and subsequently create computer-executable output files, usually called object files. These output files are in a format that can be read by the computer, and cause the computer to perform the indicated tasks.
Debuggers are computer programs that allow computer program developers to find errors in software programs. One method of detecting errors is to stop the execution of a computer program at predetermined points, or breakpoints. Debuggers may also allow the user to restart a program, track the values of the variables, execute a single-step running of a program, and set specific conditions under which the program execution should be interrupted and control given to the debugger, among other functions.
Debuggers also often support the evaluation of high level language expressions as defined by the programming language and supported by the compiler. The results of the expression evaluation in the debugger should be identical to the results that are obtained by executing the compiler-generated code for the same expression. Compilers may encode debugging information in the object code or in a separate file which, once loaded into a computer memory, may be used to map source variables to their locations in memory, determine variable types, and map source statements to the compiler-generated instructions in memory.